home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
AmigActive 10
/
AACD 10.iso
/
AACD
/
Games
/
MAME
/
src
/
drivers
/
skychut.c
< prev
next >
Wrap
C/C++ Source or Header
|
2000-04-04
|
5KB
|
181 lines
/***************************************************************************
Sky Chutter By IREM
vidhrdw.c
Functions to emulate the video hardware of the machine.
(c) 12/2/1998 Lee Taylor
***************************************************************************/
#include "driver.h"
#include "vidhrdw/generic.h"
WRITE_HANDLER( skychut_vh_flipscreen_w );
void skychut_vh_screenrefresh(struct osd_bitmap *bitmap,int full_refresh);
WRITE_HANDLER( skychut_colorram_w );
WRITE_HANDLER( skychut_vh_flipscreen_w );
static unsigned char palette[] = /* V.V */ /* Smoothed pure colors, overlays are not so contrasted */
{
0x00,0x00,0x00, /* BLACK */
0xff,0x20,0x20, /* RED */
0x20,0xff,0x20, /* GREEN */
0xff,0xff,0x20, /* YELLOW */
0x20,0xff,0xff, /* CYAN */
0xff,0x20,0xff, /* PURPLE */
0xff,0xff,0xff /* WHITE */
};
static unsigned short colortable[] =
{
0,1,0,2,0,3,0,4,0,5,0,6
};
static void init_palette(unsigned char *game_palette, unsigned short *game_colortable,const unsigned char *color_prom)
{
memcpy(game_palette,palette,sizeof(palette));
memcpy(game_colortable,colortable,sizeof(colortable));
}
static struct MemoryReadAddress skychut_readmem[] =
{
{ 0x0000, 0x02ff, MRA_RAM }, /* scratch ram */
{ 0x1000, 0x2fff, MRA_ROM },
{ 0x4000, 0x4400, MRA_RAM },
{ 0x4800, 0x4bff, MRA_RAM }, /* Foreground colour */
{ 0x5000, 0x53ff, MRA_RAM }, /* BKgrnd colour ??? */
{ 0xa200, 0xa200, input_port_1_r },
{ 0xa300, 0xa300, input_port_0_r },
// { 0xa700, 0xa700, input_port_2_r },
{ 0xfC00, 0xffff, MRA_ROM }, /* for the reset / interrupt vectors */
{ -1 } /* end of table */
};
static struct MemoryWriteAddress skychut_writemem[] =
{
{ 0x0000, 0x02ff, MWA_RAM },
{ 0x1000, 0x2fff, MWA_ROM },
{ 0x5000, 0x53ff, MWA_RAM }, /* background ????? */
{ 0x4800, 0x4bff, skychut_colorram_w,&colorram }, /* foreground colour */
{ 0x4000, 0x4400, videoram_w, &videoram, &videoram_size },
{ 0xa100, 0xa1ff, MWA_RAM }, /* Sound writes????? */
{ 0Xa400, 0xa400, skychut_vh_flipscreen_w },
{ 0xfc00, 0xffff, MWA_ROM }, /* for the reset / interrupt vectors */
{ -1 } /* end of table */
};
int skychut_interrupt(void)
{
if (readinputport(2) & 1) /* Left Coin */
return nmi_interrupt();
else
return interrupt();
}
INPUT_PORTS_START( skychut )
PORT_START
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START1 )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_COCKTAIL)
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT )
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT )
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_COCKTAIL )
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT | IPF_COCKTAIL )
PORT_START /* IN1 */
PORT_DIPNAME(0x03, 0x00, DEF_STR( Lives ) )
PORT_DIPSETTING ( 0x00, "3" )
PORT_DIPSETTING ( 0x01, "4" )
PORT_DIPSETTING ( 0x02, "5" )
PORT_START /* FAKE */
PORT_BIT_IMPULSE( 0x01, IP_ACTIVE_HIGH, IPT_COIN1, 1 )
INPUT_PORTS_END
static struct GfxLayout charlayout =
{
8,8, /* 8*8 characters */
256, /* 256 characters */
1, /* 1 bits per pixel */
{ 0 },
{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
{ 7, 6, 5, 4, 3, 2, 1, 0 },
8*8 /* every char takes 8 consecutive bytes */
};
static struct GfxDecodeInfo gfxdecodeinfo[] =
{
{ REGION_GFX1, 0x0000, &charlayout, 0, 7 }, /* 4 color codes to support midframe */
{ -1 } /* end of array */
};
static struct MachineDriver machine_driver_skychut =
{
/* basic machine hardware */
{
{
CPU_M6502,
20000000/8,
skychut_readmem,skychut_writemem,0,0,
skychut_interrupt,1
}
},
60, DEFAULT_60HZ_VBLANK_DURATION, /* frames per second, vblank duration */
1, /* single CPU, no need for interleaving */
0,
/* video hardware */
32*8, 32*8, { 0*8, 32*8-1, 2*8, 30*8-1 },
gfxdecodeinfo,
sizeof(palette) / sizeof(palette[0]) / 3, sizeof(colortable) / sizeof(colortable[0]),
init_palette,
VIDEO_TYPE_RASTER|VIDEO_SUPPORTS_DIRTY,
0,
generic_vh_start,
generic_vh_stop,
skychut_vh_screenrefresh,
/* sound hardware */
0,0,0,0,
};
/***************************************************************************
Game driver(s)
***************************************************************************/
ROM_START( skychut )
ROM_REGION( 0x10000, REGION_CPU1 ) /* 64k for code */
ROM_LOAD( "sc1d", 0x1000, 0x0400, 0x30b5ded1 )
ROM_LOAD( "sc2d", 0x1400, 0x0400, 0xfd1f4b9e )
ROM_LOAD( "sc3d", 0x1800, 0x0400, 0x67ed201e )
ROM_LOAD( "sc4d", 0x1c00, 0x0400, 0x9b23a679 )
ROM_RELOAD( 0xfc00, 0x0400 ) /* for the reset and interrupt vectors */
ROM_LOAD( "sc5a", 0x2000, 0x0400, 0x51d975e6 )
ROM_LOAD( "sc6e", 0x2400, 0x0400, 0x617f302f )
ROM_LOAD( "sc7", 0x2800, 0x0400, 0xdd4c8e1a )
ROM_LOAD( "sc8d", 0x2c00, 0x0400, 0xaca8b798 )
ROM_REGION( 0x0800, REGION_GFX1 | REGIONFLAG_DISPOSE )
ROM_LOAD( "sc9d", 0x0000, 0x0400, 0x2101029e )
ROM_LOAD( "sc10d", 0x0400, 0x0400, 0x2f81c70c )
ROM_END
GAMEX( 1980, skychut, 0, skychut, skychut, 0, ROT0, "Irem", "Sky Chuter", GAME_WRONG_COLORS )